--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit b051e76d00ab97baa948e69cdacadba3cf4739da
Parents : 4838875
Author : Mark Qvist <bc7291552be7a58f361522990465165c>
Signature : T66BB85Valid, signed by author
Date : 2026-07-22T17:53:04+02:00
Allow boundary -> boundary and boundary -> gateway path requests
Changes
2 files changed, 8 insertions(+), 2 deletions(-)
Diff
diff --git a/RNS/Interfaces/Interface.py b/RNS/Interfaces/Interface.py
index 9d6ce3ae7..6b1437c57 100755
--- a/RNS/Interfaces/Interface.py
+++ b/RNS/Interfaces/Interface.py
@@ -52,7 +52,8 @@ class Interface:
# Which interface modes a Transport Node should
# actively discover paths for.
- DISCOVER_PATHS_FOR = [MODE_ACCESS_POINT, MODE_GATEWAY, MODE_ROAMING, MODE_INTERNAL]
+ DISCOVER_PATHS_FOR = [MODE_ACCESS_POINT, MODE_GATEWAY, MODE_ROAMING, MODE_INTERNAL]
+ BOUNDARY_SEARCH_MODES = [MODE_BOUNDARY, MODE_GATEWAY]
# How many samples to use for announce
# frequency calculations
diff --git a/RNS/Transport.py b/RNS/Transport.py
index c536f6b2c..7270934c1 100755
--- a/RNS/Transport.py
+++ b/RNS/Transport.py
@@ -2945,13 +2945,17 @@ class Transport:
@staticmethod
def path_request(destination_hash, is_from_local_client, attached_interface, requestor_transport_id=None, tag=None):
should_search_for_unknown = False
- should_ingress_limit = False
+ should_ingress_limit = False
+ search_mode_filter = None
if attached_interface != None:
should_ingress_limit = attached_interface.should_ingress_limit_pr()
if RNS.Reticulum.transport_enabled():
if attached_interface.recursive_prs: should_search_for_unknown = True
elif attached_interface.mode in RNS.Interfaces.Interface.Interface.DISCOVER_PATHS_FOR: should_search_for_unknown = True
+ elif attached_interface.mode == RNS.Interfaces.Interface.Interface.MODE_BOUNDARY:
+ should_search_for_unknown = True
+ search_mode_filter = RNS.Interfaces.Interface.Interface.BOUNDARY_SEARCH_MODES
if RNS.sl(RNS.LOG_PATHING):
interface_str = f" on {attached_interface}"
@@ -3068,6 +3072,7 @@ class Transport:
with Transport.discovery_pr_lock: Transport.discovery_path_requests[destination_hash] = pr_entry
for interface in Transport.interfaces:
+ if search_mode_filter and not interface.mode in search_mode_filter: continue
if not interface == attached_interface:
if interface.should_egress_limit_pr():
RNS.log(f"Not sending recursive path request on {interface} due to active egress limiting", RNS.LOG_EXTREME) if RNS.sl(RNS.LOG_EXTREME) else None
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────